package com.unitd.modules.gen.service;

import com.unitd.frame.mybatis.core.service.ICrudService;
import com.unitd.modules.gen.entity.GenTable;

import java.util.List;

/**
 * @desc 生成代码的业务表的业务逻辑处理接口
 * @filename IGenTableService.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2017/4/28
 */
public interface IGenTableService extends ICrudService<GenTable, String> {

	/**
	 * @desc 根据数据库表名(单个表名),获取该表对应的数据
	 * @param tableName 数据库表名(单个表名)
	 * @return
	 */
	GenTable findByTableName(String tableName);

	/**
	 * @desc 根据数据库表名(多个表名,用,进行分割),获取该表对应的数据
	 * @param tableNames 数据库表名(多个表名,用,进行分割
	 * @return
	 */
	List<GenTable> findByTableNames(String tableNames);

	/**
	 * @desc 获取物理数据表列表
	 * @param genTable 数据表对象
	 * @return
	 */
	List<GenTable> findTableListFormDb(GenTable genTable);

	/**
	 * @desc 获取数据表主键
	 * @param genTable  需要生成代码的数据库表结构对象
	 * @return
	 */
	List<String> findTablePK(GenTable genTable);

	/**
	 * @desc 验证表名是否可用，如果已存在，则返回false
	 * @param tableName 数据库表名
	 * @return
	 */
	boolean checkTableName(String tableName);

	/**
	 * @desc 获取物理数据表列表
	 * @param genTable 数据表对象
	 * @return
	 */
	GenTable getTableFormDb(GenTable genTable);

	/**
	 * @desc 保存/更新生成方案信息持久化对象
	 * @param genTable 业务表信息
	 * @param userId 操作人
	 * @return
	 */
	int doEdit(GenTable genTable, String userId);

	/**
	 * @desc @desc 根据数据库表名(多个表名,用,进行分割),获取对应的表的注释信息串
	 * @param tableNames 数据库表名(多个表名,用,进行分割)
	 * @return
	 */
	String getTableCommentsByTableNames(String tableNames);
}